package model

import (
	"gorm.io/gorm"
	"time"
)

type DataLock struct {
	ID           int64  `json:"id" gorm:"id"`
	FtpInfoId    int64  `json:"ftp_info_id" gorm:"ftp_info_id"`       // ftp_info_id
	Date         string `json:"date" gorm:"date"`                     // 日期
	Time         string `json:"time" gorm:"time"`                     // 时间
	LogTime      int64  `json:"log_time" gorm:"log_time"`             // log_time
	SteamId      string `json:"steam_id" gorm:"steam_id"`             // 时间
	GameId       int64  `json:"game_id" gorm:"game_id"`               // 游戏id
	GameName     string `json:"game_name" gorm:"game_name"`           // 游戏名称
	LockEvent    string `json:"lock_event" gorm:"lock_event"`         // 游戏名称
	LockStatus   string `json:"lock_status" gorm:"lock_status"`       // 指令类型
	LockNum      int64  `json:"lock_num" gorm:"lock_num"`             // 失败次数
	LockTime     string `json:"lock_time" gorm:"lock_time"`           // 指令类型
	LockObj      string `json:"lock_obj" gorm:"lock_obj"`             // 锁住对象
	LockType     string `json:"lock_type" gorm:"lock_type"`           // 锁类型
	LockSteamId  string `json:"lock_steam_id" gorm:"lock_steam_id"`   // 锁所属steamid
	LockGameId   int64  `json:"lock_game_id" gorm:"lock_game_id"`     // 锁所属用户id
	LockGameName string `json:"lock_game_name" gorm:"lock_game_name"` // 锁所属用户名称
	LockLocation string `json:"lock_location" gorm:"lock_location"`   // 锁所在位置
	LockArea     string `json:"lock_area" gorm:"lock_area"`           // 锁所在区域
	UpdatedAt    int64  `json:"updated_at" gorm:"updated_at"`         // 修改时间
	CreatedAt    int64  `json:"created_at" gorm:"created_at"`         // 添加时间
}

func (DataLock) TableName() string {
	return "sm_data_lock"
}

func (u DataLock) BeforeUpdate(tx *gorm.DB) (err error) {
	now := time.Now()
	unixTime := now.Unix()
	u.UpdatedAt = unixTime
	u.CreatedAt = unixTime
	return nil
}

type DataLockM struct {
	DB *gorm.DB
}

func NewDataLockM() *DataLockM {
	return &DataLockM{
		GetDB(),
	}
}

func (c *DataLockM) InsertDataLock(DataArr []DataLock) bool {

	result := c.DB.Omit("id").CreateInBatches(DataArr, 1000)

	if result.Error != nil {
		panic(result.Error)
	}
	return true
}
